home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Extravaganza - Disc 1
/
ShareWare Extravaganza 1 of 4 (The Ultimate Shareware Company).iso
/
grprogs
/
picutil.exe
/
ALTER.SRC
/
PIG.ASM
< prev
next >
Wrap
Assembly Source File
|
1986-07-14
|
4KB
|
112 lines
;╔═════════════════════════════════════════════════════════════════════════════╗
;║ ░░░░░░░░░░░ PROGRAM = PIG.ASM ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ║
;╚═════════════════════════════════════════════════════════════════════════════╝
;┌─────────────────────────────────────────────────────────────────────────────┐
;│ RICOH IS30 SCANNER FORMAT │
;└─────────────────────────────────────────────────────────────────────────────┘
CSEG SEGMENT PUBLIC BYTE
ASSUME CS:CSEG,DS:CSEG
INCLUDE PUBLICS.EQU
INCLUDE STRUC.EQU
EXTRN PIG_HEADER:WORD
EXTRN PEL_SIZE:WORD
EXTRN WIDTH_PIX:WORD
EXTRN HEIGHT_PIX:WORD
EXTRN WIDTH_BYTES:WORD
EXTRN FLAGS:WORD
EXTRN ASC2BIN:NEAR
EXTRN BIN2ASC:NEAR
EXTRN READ_RAW:NEAR
;┌─────────────────────────────────────────────────────────────────────────────┐
;│ PIG IN │
;└─────────────────────────────────────────────────────────────────────────────┘
PUBLIC PIG_IN
PIG_IN PROC NEAR
PUSH AX ;SAVE REGISTERS
PUSH SI ;
TEST PIG_HEADER.PIG_MODE2,1
JNZ PI050
MOV PEL_SIZE,4
OR FLAGS,GRAYSHADE
PI050:
MOV SI,OFFSET PIG_HEADER.PIG_WIDTH
MOV AX,4 ;CONVERT 4 ASCII CHARACTERS
CALL ASC2BIN ;
MOV WIDTH_BYTES,AX ;SAVE AS BYTES
SHL AX,1 ;CONVERT TO PIXELS
TEST FLAGS,GRAYSHADE ;
JNZ PI100 ;IF GRAYSCALE DIVIDE BY 4
SHL AX,1 ;2
SHL AX,1 ;4
PI100:
MOV WIDTH_PIX,AX ;SAVE AS PIXELS
MOV SI,OFFSET PIG_HEADER.PIG_HEIGHT
MOV AX,5 ;CONVERT 5 ASCII CHARACTERS
CALL ASC2BIN ;
MOV HEIGHT_PIX,AX ;SAVE AS PIXELS
PI900:
CLC
POP SI ;RESTORE REGISTERS
POP AX ;
RET
PIG_IN ENDP
;┌─────────────────────────────────────────────────────────────────────────────┐
;│ PIG OUT │
;└─────────────────────────────────────────────────────────────────────────────┘
;┌─────────────────────────────────────────────────────────────────────────────┐
;│ SI = HEADER STRUCTURE │
;└─────────────────────────────────────────────────────────────────────────────┘
PUBLIC PIG_OUT
PIG_OUT PROC NEAR
PUSH AX ;SAVE REGISTERS
PUSH BX ;
PUSH DI ;
MOV DI,OFFSET PIG_HEADER.PIG_WIDTH
MOV BX,4 ;CONVERT 4 ASCII CHARACTERS
MOV AX,WIDTH_BYTES ;
CALL BIN2ASC ;
MOV DI,OFFSET PIG_HEADER.PIG_HEIGHT
MOV BX,5 ;CONVERT 5 ASCII CHARACTERS
MOV AX,HEIGHT_PIX ;
CALL BIN2ASC ;
;
TEST FLAGS,GRAYSHADE ;
JNZ PO100 ;
MOV PIG_HEADER.PIG_MODE2,1 ;BINARY MODE
PO100:
CLC
POP DI ;RESTORE REGISTERS
POP BX ;
POP AX ;
RET
PIG_OUT ENDP
;┌─────────────────────────────────────────────────────────────────────────────┐
;│ PIG READ │
;└─────────────────────────────────────────────────────────────────────────────┘
PUBLIC PIG_READ
PIG_READ PROC NEAR
CALL READ_RAW ;
JNC PR100 ;
; SUB AX,4 ;STRIP OFF END OF FILE
STC
PR100:
RET ;
PIG_READ ENDP
;╔═════════════════════════════════════════════════════════════════════════════╗
;╚═════════════════════════════════════════════════════════════════════════════╝
CSEG ENDS
END